#ifndef FILE_SAVE_H
#define FILE_SAVE_H


#include <stdint.h>
#include "usr_typedef.h"

typedef struct file_info_head_t {
	char				dev_name[16];				//设备名称
	char				dev_local[16];				//位置信息
	char 				dev_sn[16];					//产品编号
	char 				dev_type[10];				//设备类型
	char 				spd_val[SPD_CH_TOTAL][8];	//转速值(90000.00)
	char				chx_num[4];					//最大16
	char				samp_freq[8];				//采样频率(102400)
	char 				amb_temp[6];				//环境温度(100.0)
	char				disk_free[10];				//磁盘剩余空间(32768.00)
	char				sys_status[6];				//系统状态(ALARM)
	char				time[20];					//时间
} file_info_head;									//字节对齐共128byte

typedef struct file_info_chx_t {
	char					chx_index[6];			//通道号(UNDEF)
	char					chx_desc[16];			//描述
	char					chx_mode[6];			//模式(SAFE)
	char 					chx_sample_freq[8];		//通道采样率
	char 					chx_pga_gain[8];		//增益(128.00)
	char 					chx_drcc_gain[8];		//调理模块增益(32.00)
	char 					chx_fir_cutoff[8];		//抗混叠滤波器截止频率
	char					chx_sensor_sens[8];		//传感器灵敏度(1000.12)
	char					chx_status_alarm[6];	//预警状态(ALARM)
	char					chx_offset_val[8];		//偏置值
	char					chx_plug_det[8];		//插拔监测(INSERT,REMOVE)
	char					chx_over_range[8];		//超量程监测
	char					chx_pwr_a24v[8];		//通道24V直流供电状态
	char					chx_sensor_type[6];		//传感器类型ACC,VEL,DISP,VOL,CUR等
	char					chx_date_type[8];		//数据类型double，float，uint32等等
	char					chx_reserve[8];			//预留
} file_info_chx;									//字节对齐共128byte

typedef struct file_info_temp_t {
	char					temp_index[6];			//通道号(UNDEF)
	char					temp_desc[16];		
	char					temp_mode[5];			//模式(SHOT)		
	char					temp_pga[4];			//(128)
	char					temp_ecs[5];			//(2000)
	//char					temp_cali_value[8];		//校准值(100.432)
	char					temp_plug_det[8];		//插拔监测(INSERTED)
	char 					temp_value[8];			//温度值(-199.99)
	char					temp_undef[12];			//未定义
} file_info_temp;									//字节对齐共64byte


typedef struct file_info_spd_t {
	char					spd_index[6];			//通道号(UNDEF)
	char					spd_desc[16];			//由于pulse占用了，所以最多14个字符	
	char					spd_mode[6];			//模式(PHOTO)		
	char					spd_pulse[4];			//浮点数,保留小数点后2位
} file_info_spd;									//字节对齐共32byte


uint8_t enable_spd_num(const spd_cfg_info spd[]);
uint8_t enable_chx_num(const chx_cfg_info chx[]);
void file_fill_file_head_format(file_info_head *head, const sys_cfg_info *sys, 
							const chx_cfg_info chx[], const spd_unit spd[], sys_runtime *rt);
void file_fill_chx_data_format(file_info_chx *head, uint8_t index, const chx_cfg_info chx[]);
void file_fill_spd_data_format(file_info_spd *head, uint8_t index, const spd_cfg_info spd[]);
void vdata_file_save(sys_cfg_info *sys, sys_runtime *rt, chx_cfg_info chx[],
									acc_unit acc[], spd_cfg_info cspd[], spd_unit uspd[]);



#endif

